// 数据类型

// 基本数据类型
// Number   数值
// String   字符串
// Boolean  布尔值
// Null     空值
// Undefined    未定义
// Symbol    符号
// BigInt    大整数

// 引用数据类型
// Object   对象
// Array    数组
// Function 函数
// Date     日期
// RegExp   正则
// Error    错误对象
// Map      Map集合
// Set      Set集合
// WeakMap  WeakMap集合
// WeakSet  WeakSet集合
// Promise  Promise对象
// Generator  Generator函数
// Reflect  反射
// Proxy    代理
// Intl     国际化
// Math     数学对象
// JSON     JSON对象
// Atomics  原子对象
// SharedArrayBuffer  共享内存对象
// ArrayBuffer         缓冲对象
// DataView            数据视图对象
let a =100;
console.log(typeof a); // number
let b = 'abc';
console.log(typeof b); // string
let c = true;
console.log(typeof c); // boolean
let d = null;
console.log(typeof d); // object
let e;
console.log(typeof e); // undefined
let f = Symbol('f');
console.log(typeof f); // symbol
let g = 10n;
console.log(typeof g); // bigint
let h = {name:'tom',age:18};
console.log(typeof h); // object
let i = [1,2,3];
console.log(typeof i); // object
let j = function () {};
console.log(typeof j); // function
let k = new Date();
console.log(typeof k); // object
let l = /abc/;
console.log(typeof l); // object
let m = new Error();
console.log(typeof m); // object
let n = new Map();
console.log(typeof n); // object
let o = new Set();
console.log(typeof o); // object
let p = new WeakMap();
console.log(typeof p); // object
let q = new WeakSet();
console.log(typeof q); // object
let r = new Promise(function () {});
//  JS 中的数值是有范围的
Number.MIN_VALUE  // 最小值
Number.MAX_VALUE  // 最大值
Number.POSITIVE_INFINITY  // 正无穷
Number.NEGATIVE_INFINITY  // 负无穷
Number.NaN  // 非数值
// NaN 与任何值都不相等，包括它自己
console.log(NaN == NaN); // false
console.log(NaN === NaN); // false
// isNaN() 用来判断一个值是否为NaN
console.log(isNaN(NaN)); // true
console.log(isNaN(10)); // false
console.log(isNaN('10')); // false
console.log(isNaN('blue')); // true
console.log(isNaN(true)); // false
// parseInt() 用来将字符串转为整数
console.log(parseInt('123')); // 123
console.log(parseInt('0xA')); // 10
console.log(parseInt('22.5')); // 22
console.log(parseInt('070')); // 56
console.log(parseInt('70')); // 70
console.log(parseInt('70',8)); // 56
console.log(parseInt('15*4')); // 15
console.log(parseInt('15px')); // 15